package pl.engine.model.vo
{
	import pl.engine.model.vo.obstacle.IBaseObstacle;
	import pl.textures.TextureID;

	import starling.display.Image;

	/**
	 * @author michalr
	 * podstawowa plytka mapy, przechowywana w pamieci
	 * zawiera informacje o przynaleznych jej widokowo terenie
	 */
	public class BaseMapTile
	{
		/** wertykalna pozycja na mapie */
		public var vID:uint = 0;
		/** horyzontalna pozycja na mapie */
		public var hID:uint = 0;
		/** wielkosc plytki wys i szer */
		public var size:uint = 0;
		/** przechowywane tekstury */
		public var textures:Vector.<uint> = new Vector.<uint>();
		/** elementy z glebia i masa */
		public var obstacles:Array = [];
		public var isRendered:Boolean;
		public var isSelected:Boolean;
		public var tileImage:Image;

		public static function createDefaultTile( hID:uint, vID:uint, size:uint ):BaseMapTile
		{
			var vo:BaseMapTile = new BaseMapTile();
			vo.hID = hID;
			vo.vID = vID;
			vo.size = size;
			vo.textures.push( TextureID.BASE);
			return vo;
		}

		public function addObstacle( obj:IBaseObstacle ):void
		{
			obstacles.push( obj );
		}

		public function getObstacles():Array
		{
			return obstacles;
		}
		
		public function cleanView():void
		{
			tileImage.dispose();
			tileImage = null;
		}
	}
}
